// Benxin UI 组件库入口文件

// 基础组件
import BxButton from './components/basic/BxButton.vue'
import BxIcon from './components/basic/BxIcon.vue'
import BxLink from './components/basic/BxLink.vue'
import BxTypography from './components/basic/BxTypography.vue'

// 布局组件
import BxGrid from './components/layout/BxGrid.vue'
import BxCol from './components/layout/BxCol.vue'
import BxLayout from './components/layout/BxLayout.vue'
import BxHeader from './components/layout/BxHeader.vue'
import BxSider from './components/layout/BxSider.vue'
import BxContent from './components/layout/BxContent.vue'
import BxFooter from './components/layout/BxFooter.vue'
import BxDivider from './components/layout/BxDivider.vue'
import BxSpace from './components/layout/BxSpace.vue'

// 导航组件
import BxAffix from './components/navigation/BxAffix.vue'
import BxAnchor from './components/others/BxAnchor.vue' // Anchor is in others category
import BxAnchorLink from './components/others/BxAnchorLink.vue' // AnchorLink is in others category
import BxBreadcrumb from './components/navigation/BxBreadcrumb.vue'
import BxDropdown from './components/navigation/BxDropdown.vue'
import BxDropdownItem from './components/navigation/BxDropdownItem.vue'
import BxMenu from './components/navigation/BxMenu.vue'
import BxMenuItem from './components/navigation/BxMenuItem.vue'
import BxSubMenu from './components/navigation/BxSubMenu.vue'
import BxPagination from './components/navigation/BxPagination.vue'
import BxSteps from './components/navigation/BxSteps.vue'
import BxTabs from './components/navigation/BxTabs.vue'
import BxBackTop from './components/navigation/BxBackTop.vue'

// 输入组件
import BxAutoComplete from './components/input/BxAutoComplete.vue'
import BxCascader from './components/input/BxCascader.vue'
import BxCheckbox from './components/input/BxCheckbox.vue'
import BxColorPicker from './components/input/BxColorPicker.vue'
import BxDatePicker from './components/input/BxDatePicker.vue'
import BxForm from './components/input/BxForm.vue'
import BxFormItem from './components/input/BxFormItem.vue'
import BxInput from './components/input/BxInput.vue'
import BxInputNumber from './components/input/BxInputNumber.vue'
import BxRadio from './components/input/BxRadio.vue'
import BxRangeInput from './components/input/BxRangeInput.vue'
import BxSelect from './components/input/BxSelect.vue'
import BxSlider from './components/input/BxSlider.vue'
import BxSwitch from './components/input/BxSwitch.vue'
import BxTagInput from './components/input/BxTagInput.vue'
import BxTextarea from './components/input/BxTextarea.vue'
import BxTimePicker from './components/input/BxTimePicker.vue'
import BxTransfer from './components/input/BxTransfer.vue'
import BxTreeSelect from './components/input/BxTreeSelect.vue'
import BxUpload from './components/input/BxUpload.vue'

// 数据展示组件
import BxAvatar from './components/data-display/BxAvatar.vue'
import BxBadge from './components/data-display/BxBadge.vue'
import BxCalendar from './components/data-display/BxCalendar.vue'
import BxCard from './components/data-display/BxCard.vue'
import BxCarousel from './components/data-display/BxCarousel.vue'
import BxCarouselItem from './components/data-display/BxCarouselItem.vue'
import BxCollapse from './components/data-display/BxCollapse.vue'
import BxCollapsePanel from './components/data-display/BxCollapsePanel.vue'
import BxComment from './components/data-display/BxComment.vue'
import BxDescriptions from './components/data-display/BxDescriptions.vue'
import BxEmpty from './components/data-display/BxEmpty.vue'
import BxImage from './components/data-display/BxImage.vue'
import BxImageViewer from './components/data-display/BxImageViewer.vue'
import BxList from './components/data-display/BxList.vue'
import BxListItem from './components/data-display/BxListItem.vue'
import BxLoading from './components/data-display/BxLoading.vue'
import BxProgress from './components/data-display/BxProgress.vue'
import BxSkeleton from './components/data-display/BxSkeleton.vue'
import BxStatistic from './components/data-display/BxStatistic.vue'
import BxSwiper from './components/data-display/BxSwiper.vue'
import BxSwiperItem from './components/data-display/BxSwiperItem.vue'
import BxTable from './components/data-display/BxTable.vue'
import BxTag from './components/data-display/BxTag.vue'
import BxTimeline from './components/data-display/BxTimeline.vue'
import BxTimelineItem from './components/data-display/BxTimelineItem.vue'
import BxTooltip from './components/data-display/BxTooltip.vue'
import BxTree from './components/data-display/BxTree.vue'
import BxWatermark from './components/data-display/BxWatermark.vue'

// 消息反馈组件
import BxAlert from './components/feedback/BxAlert.vue'
import BxDialog from './components/feedback/BxDialog.vue'
import BxDrawer from './components/feedback/BxDrawer.vue'
import BxGuide from './components/feedback/BxGuide.vue'
import BxMessage from './components/feedback/BxMessage.vue'
import BxModal from './components/feedback/BxModal.vue'
import BxNotification from './components/feedback/BxNotification.vue'
import BxPopconfirm from './components/feedback/BxPopconfirm.vue'
import BxPopup from './components/feedback/BxPopup.vue'
import BxResult from './components/feedback/BxResult.vue'
import BxSpin from './components/feedback/BxSpin.vue'
import BxPopover from './components/feedback/BxPopover.vue'

// 其他组件
import BxConfigProvider from './components/others/BxConfigProvider.vue'
import BxLocaleProvider from './components/others/BxLocaleProvider.vue'

const components = {
  BxButton,
  BxIcon,
  BxLink,
  BxTypography,
  BxGrid,
  BxCol,
  BxLayout,
  BxHeader,
  BxSider,
  BxContent,
  BxFooter,
  BxDivider,
  BxSpace,
  BxAffix,
  BxAnchor,
  BxAnchorLink,
  BxBreadcrumb,
  BxDropdown,
  BxDropdownItem,
  BxMenu,
  BxMenuItem,
  BxSubMenu,
  BxPagination,
  BxSteps,
  BxTabs,
  BxBackTop,
  BxAutoComplete,
  BxCascader,
  BxCheckbox,
  BxColorPicker,
  BxDatePicker,
  BxForm,
  BxFormItem,
  BxInput,
  BxInputNumber,
  BxRadio,
  BxRangeInput,
  BxSelect,
  BxSlider,
  BxSwitch,
  BxTagInput,
  BxTextarea,
  BxTimePicker,
  BxTransfer,
  BxTreeSelect,
  BxUpload,
  BxAvatar,
  BxBadge,
  BxCalendar,
  BxCard,
  BxCarousel,
  BxCarouselItem,
  BxCollapse,
  BxCollapsePanel,
  BxComment,
  BxDescriptions,
  BxEmpty,
  BxImage,
  BxImageViewer,
  BxList,
  BxListItem,
  BxLoading,
  BxProgress,
  BxSkeleton,
  BxStatistic,
  BxSwiper,
  BxSwiperItem,
  BxTable,
  BxTag,
  BxTimeline,
  BxTimelineItem,
  BxTooltip,
  BxTree,
  BxWatermark,
  BxAlert,
  BxDialog,
  BxDrawer,
  BxGuide,
  BxMessage,
  BxModal,
  BxNotification,
  BxPopconfirm,
  BxPopup,
  BxResult,
  BxSpin,
  BxPopover,
  BxConfigProvider,
  BxLocaleProvider
}

const install = (app) => {
  for (const key in components) {
    app.component(key, components[key])
  }
}

export default {
  install
}

export {
  BxButton,
  BxIcon,
  BxLink,
  BxTypography,
  BxGrid,
  BxCol,
  BxLayout,
  BxHeader,
  BxSider,
  BxContent,
  BxFooter,
  BxDivider,
  BxSpace,
  BxAffix,
  BxAnchor,
  BxAnchorLink,
  BxBreadcrumb,
  BxDropdown,
  BxDropdownItem,
  BxMenu,
  BxMenuItem,
  BxSubMenu,
  BxPagination,
  BxSteps,
  BxTabs,
  BxBackTop,
  BxAutoComplete,
  BxCascader,
  BxCheckbox,
  BxColorPicker,
  BxDatePicker,
  BxForm,
  BxFormItem,
  BxInput,
  BxInputNumber,
  BxRadio,
  BxRangeInput,
  BxSelect,
  BxSlider,
  BxSwitch,
  BxTagInput,
  BxTextarea,
  BxTimePicker,
  BxTransfer,
  BxTreeSelect,
  BxUpload,
  BxAvatar,
  BxBadge,
  BxCalendar,
  BxCard,
  BxCarousel,
  BxCarouselItem,
  BxCollapse,
  BxCollapsePanel,
  BxComment,
  BxDescriptions,
  BxEmpty,
  BxImage,
  BxImageViewer,
  BxList,
  BxListItem,
  BxLoading,
  BxProgress,
  BxSkeleton,
  BxStatistic,
  BxSwiper,
  BxSwiperItem,
  BxTable,
  BxTag,
  BxTimeline,
  BxTimelineItem,
  BxTooltip,
  BxTree,
  BxWatermark,
  BxAlert,
  BxDialog,
  BxDrawer,
  BxGuide,
  BxMessage,
  BxModal,
  BxNotification,
  BxPopconfirm,
  BxPopup,
  BxResult,
  BxSpin,
  BxPopover,
  BxConfigProvider,
  BxLocaleProvider
}


